package com.example.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.example.model.BlockchainOp;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;

import java.util.List;

/**
 * 区块链操作记录Mapper接口
 * 
 * @author system
 * @description 针对表【blockchain_op】的数据库操作Mapper
 */
@Mapper
public interface BlockchainOpMapper extends BaseMapper<BlockchainOp> {

  /**
   * 查询用户最近的区块链操作记录
   * 
   * @param userAddress 用户地址
   * @param limit       限制条数
   * @return 操作记录列表
   */
  @Select("SELECT * FROM blockchain_op WHERE user_address = #{userAddress} ORDER BY op_time DESC LIMIT #{limit}")
  List<BlockchainOp> selectRecentByUser(String userAddress, int limit);

  /**
   * 分页查询用户的区块链操作记录
   * 
   * @param userAddress 用户地址
   * @param offset      偏移量
   * @param limit       限制条数
   * @return 操作记录列表
   */
  List<BlockchainOp> selectPagedByUser(@Param("userAddress") String userAddress, @Param("offset") int offset,
      @Param("limit") int limit);

  /**
   * 按操作类型查询用户的区块链操作记录
   * 
   * @param userAddress 用户地址
   * @param opType      操作类型
   * @return 操作记录列表
   */
  List<BlockchainOp> selectByUserAndType(@Param("userAddress") String userAddress, @Param("opType") String opType);

  /**
   * 获取用户操作记录总数
   * 
   * @param userAddress 用户地址
   * @return 记录总数
   */
  int countByUser(@Param("userAddress") String userAddress);

  /**
   * 获取所有操作记录总数
   * 
   * @return 记录总数
   */
  int countAll();
}